|
Elias delta code is a universal code encoding the positive integers developed by Peter Elias. == Encoding == To code a number ''X''≥1: # Let ''N''=⌊log2 ''X''⌋ be the highest power of 2 in ''X'', so 2''N'' ≤ ''X'' < 2''N''+1. # Let ''L''=⌊log2 ''N''+1⌋ be the highest power of 2 in ''N''+1, so 2''L'' ≤ ''N''+1 < 2''L''+1. # Write ''L'' zeros, followed by # the ''L''+1-bit binary representation of ''N''+1, followed by # all but the leading bit (i.e. the last ''N'' bits) of ''X''. An equivalent way to express the same process: #Separate ''X'' into the highest power of 2 it contains (2''N'') and the remaining ''N'' binary digits. #Encode ''N''+1 with Elias gamma coding. #Append the remaining ''N'' binary digits to this representation of ''N''+1. To represent a number , Elias delta uses bits.〔 The code begins, using instead of : To decode an Elias delta-coded integer: #Read and count zeros from the stream until you reach the first one. Call this count of zeros ''L''. #Considering the one that was reached to be the first digit of an integer, with a value of 2''L'', read the remaining ''L'' digits of the integer. Call this integer ''N''+1, and subtract one to get ''N''. #Put a one in the first place of our final output, representing the value 2''N''. #Read and append the following ''N'' digits. Example: 001010011 1. 2 leading zeros in 001 2. read 2 more bits i.e. 00101 3. decode N+1 = 00101 = 5 4. get N = 5 − 1 = 4 remaining bits for the complete code i.e. '0011' 5. encoded number = 24 + 3 = 19 This code can be generalized to zero or negative integers in the same ways described in Elias gamma coding. 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Elias delta coding」の詳細全文を読む スポンサード リンク
|